home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 45
/
Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso
/
Aminet
/
gfx
/
x11
/
x3270_3_2_16.lha
/
amiga_src
/
globals.h
< prev
next >
Wrap
C/C++ Source or Header
|
2001-06-24
|
7KB
|
275 lines
/*
* Modifications Copyright 1993, 1994, 1995, 1996, 1999, 2000 by Paul Mattes.
* Copyright 1990 by Jeff Sparkes.
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation.
*/
/*
* globals.h
* Common definitions for x3270.
*/
/* Optional parts. */
#include "parts.h"
#if defined(X3270_TN3270E) && !defined(X3270_ANSI) /*[*/
#define X3270_ANSI 1 /* RFC2355 requires NVT mode */
#endif /*]*/
/*
* OS-specific #defines. Except for the blocking-connect workarounds, these
* should be replaced with autoconf probes as soon as possible.
*/
/*
* BLOCKING_CONNECT_ONLY
* Use only blocking sockets.
*/
#if defined(sco) /*[*/
#define BLOCKING_CONNECT_ONLY 1
#endif /*]*/
#ifdef AMIGA /*[*/
#define BLOCKING_CONNECT_ONLY 1
#endif /*]*/
#if defined(apollo) /*[*/
#define BLOCKING_CONNECT_ONLY 1
#endif /*]*/
/*
* Compiler-specific #defines.
*/
/* 'unused' explicitly flags an unused parameter */
#if defined(__GNUC__) /*[*/
#define unused __attribute__((__unused__))
#else /*][*/
#define unused /* nothing */
#endif /*]*/
#ifdef AMIGA
#include <sys/time.h> /* System time-related data types */
#include <sys/tcp_types.h>
#endif
/*
* Prerequisite #includes.
*/
#include <stdio.h> /* Unix standard I/O library */
#include <stdlib.h> /* Other Unix library functions */
#include <unistd.h> /* Unix system calls */
#include <ctype.h> /* Character classes */
#include <string.h> /* String manipulations */
#include <sys/types.h> /* Basic system data types */
#include <sys/time.h> /* System time-related data types */
#include "localdefs.h" /* {s,tcl,c}3270-specific defines */
#include "conf.h" /* autoconf settings */
/* Local process (-e) header files. */
#if defined(X3270_LOCAL_PROCESS) && defined(HAVE_LIBUTIL) /*[*/
#define LOCAL_PROCESS 1
#include <termios.h>
#if defined(HAVE_PTY_H) /*[*/
#include <pty.h>
#endif /*]*/
#if defined(HAVE_LIBUTIL_H) /*[*/
#include <libutil.h>
#endif /*]*/
#if defined(HAVE_UTIL_H) /*[*/
#include <util.h>
#endif /*]*/
#endif /*]*/
/* Simple global variables */
extern int COLS;
extern int ROWS;
#if defined(X3270_DISPLAY) /*[*/
extern Atom a_3270, a_registry, a_iso8859, a_ISO8859, a_encoding,
a_1;
extern XtAppContext appcontext;
#endif /*]*/
extern const char *build;
extern int children;
extern char *connected_lu;
extern char *connected_type;
extern char *current_host;
extern unsigned short current_port;
extern Boolean *debugging_font;
extern char *efontname;
extern Boolean ever_3270;
extern Boolean exiting;
extern Boolean *extended_3270font;
extern Boolean flipped;
extern char *full_current_host;
extern char full_model_name[];
extern char *hostname;
extern Boolean *latin1_font;
extern char luname[];
#if defined(LOCAL_PROCESS) /*[*/
extern Boolean local_process;
#endif /*]*/
extern int maxCOLS;
extern int maxROWS;
extern char *model_name;
extern int model_num;
extern Boolean non_tn3270e_host;
extern int ov_cols, ov_rows;
extern Boolean passthru_host;
extern char *programname;
extern char *reconnect_host;
extern int screen_depth;
extern Boolean scroll_initted;
extern Boolean shifted;
extern Boolean *standard_font;
extern Boolean std_ds_host;
extern char *termtype;
extern Widget toplevel;
#if defined(X3270_DISPLAY) /*[*/
extern Atom a_delete_me;
extern Atom a_save_yourself;
extern Atom a_state;
extern Display *display;
extern Pixmap gray;
extern Pixel keypadbg_pixel;
extern XrmDatabase rdb;
extern Window root_window;
#endif /*]*/
/* Data types and complex global variables */
/* connection state */
enum cstate {
NOT_CONNECTED, /* no socket, unknown mode */
PENDING, /* connection pending */
CONNECTED_INITIAL, /* connected, no mode yet */
CONNECTED_ANSI, /* connected in NVT ANSI mode */
CONNECTED_3270, /* connected in old-style 3270 mode */
CONNECTED_INITIAL_E, /* connected in TN3270E mode, unnegotiated */
CONNECTED_NVT, /* connected in TN3270E mode, NVT mode */
CONNECTED_SSCP, /* connected in TN3270E mode, SSCP-LU mode */
CONNECTED_TN3270E /* connected in TN3270E mode, 3270 mode */
};
extern enum cstate cstate;
#define PCONNECTED ((int)cstate >= (int)PENDING)
#define HALF_CONNECTED (cstate == PENDING)
#define CONNECTED ((int)cstate >= (int)CONNECTED_INITIAL)
#define IN_NEITHER (cstate == CONNECTED_INITIAL)
#define IN_ANSI (cstate == CONNECTED_ANSI || cstate == CONNECTED_NVT)
#define IN_3270 (cstate == CONNECTED_3270 || cstate == CONNECTED_TN3270E || cstate == CONNECTED_SSCP)
#define IN_SSCP (cstate == CONNECTED_SSCP)
#define IN_TN3270E (cstate == CONNECTED_TN3270E)
#define IN_E (cstate >= CONNECTED_INITIAL_E)
/* keyboard modifer bitmap */
#define ShiftKeyDown 0x01
#define MetaKeyDown 0x02
#define AltKeyDown 0x04
/* toggle names */
struct toggle_name {
const char *name;
int index;
};
extern struct toggle_name toggle_names[];
/* extended attributes */
struct ea {
unsigned char fg; /* foreground color (0x00 or 0xf<n>) */
unsigned char bg; /* background color (0x00 or 0xf<n>) */
unsigned char gr; /* ANSI graphics rendition bits */
unsigned char cs; /* character set (GE flag, or 0..2) */
};
#define GR_BLINK 0x01
#define GR_REVERSE 0x02
#define GR_UNDERLINE 0x04
#define GR_INTENSIFY 0x08
#define CS_MASK 0x03 /* mask for specific character sets */
#define CS_GE 0x04 /* cs flag for Graphic Escape */
/*
* Lightpen select test macro, includes configurable override of selectability
* of highlighted fields.
*/
#define FA_IS_SEL(fa) \
(FA_IS_SELECTABLE(fa) && \
(appres.highlight_select || !FA_IS_INTENSE(fa)))
/* translation lists */
struct trans_list {
char *name;
char *pathname;
Boolean is_temp;
Boolean from_server;
struct trans_list *next;
};
extern struct trans_list *trans_list;
/* font list */
struct font_list {
char *label;
char *font;
struct font_list *next;
};
extern struct font_list *font_list;
extern int font_count;
/* input key type */
enum keytype { KT_STD, KT_GE };
/* state changes */
#define ST_HALF_CONNECT 0
#define ST_CONNECT 1
#define ST_3270_MODE 2
#define ST_LINE_MODE 3
#define ST_REMODEL 4
#define ST_PRINTER 5
#define ST_EXITING 6
#define N_ST 7
/* Naming convention for private actions. */
#define PA_PFX "PA-"
/* Shorthand macros */
#define CN ((char *) NULL)
#define PN ((XtPointer) NULL)
/* Configuration change masks. */
#define NO_CHANGE 0x0000 /* no change */
#define MODEL_CHANGE 0x0001 /* screen dimensions changed */
#define FONT_CHANGE 0x0002 /* emulator font changed */
#define COLOR_CHANGE 0x0004 /* color scheme or 3278/9 mode changed */
#define SCROLL_CHANGE 0x0008 /* scrollbar snapped on or off */
#define CHARSET_CHANGE 0x0010 /* character set changed */
#define ALL_CHANGE 0xffff /* everything changed */
/* Portability macros */
/* Equivalent of setlinebuf */
#if defined(_IOLBF) /*[*/
#define SETLINEBUF(s) setvbuf(s, (char *)NULL, _IOLBF, BUFSIZ)
#else /*][*/
#define SETLINEBUF(s) setlinebuf(s)
#endif /*]*/
/* Motorola version of gettimeofday */
#if defined(MOTOROLA)
#define gettimeofday(tp,tz) gettimeofday(tp)
#endif
#ifdef AMIGA
#include "amiga.h"
#endif